import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace SystemPersonApi {
  /** 系统人员信息 */
  export interface Person {
    id: number; // 人员主键
    fullName: string; // 姓名（加密）
    idcard: string; // 身份证（加密）
    fullNameDecrypted: string; // 姓名（解密）
    idcardDecrypted: string; // 身份证（解密）
    creator: string; // 创建者
    createTime?: Dayjs | string; // 创建时间
    updater: string; // 更新者
    updateTime?: Dayjs | string; // 更新时间
    tenantId?: number; // 租户编号
  }
}

/** 查询系统人员分页 */
export function getPersonPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<SystemPersonApi.Person>>(
    '/system/personInfo/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询系统人员详情 */
export function getPerson(id: number) {
  return requestClient.get<SystemPersonApi.Person>(
    `/system/personInfo/get?id=${id}`,
  );
}

/** 新增系统人员 */
export function createPerson(data: SystemPersonApi.Person) {
  return requestClient.post('/system/personInfo/create', data);
}

/** 修改系统人员 */
export function updatePerson(data: SystemPersonApi.Person) {
  return requestClient.put('/system/personInfo/update', data);
}

/** 删除系统人员 */
export function deletePerson(id: number) {
  return requestClient.delete(`/system/personInfo/delete?id=${id}`);
}

/** 批量删除系统人员 */
export function deletePersonList(ids: number[]) {
  return requestClient.delete(
    `/system/personInfo/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出系统人员 */
export function exportPerson(params: any) {
  return requestClient.download('/system/personInfo/export-excel', { params });
}
